home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / TEST_SET.C < prev    next >
C/C++ Source or Header  |  1992-09-24  |  28KB  |  698 lines

  1. //
  2. // Copyright (C) 1991 Texas Instruments Incorporated.
  3. //
  4. // Permission is granted to any individual or institution to use, copy, modify,
  5. // and distribute this software, provided that this complete copyright and
  6. // permission notice is maintained, intact, in all copies and supporting
  7. // documentation.
  8. //
  9. // Texas Instruments Incorporated provides this software "as is" without
  10. // express or implied warranty.
  11. //
  12.  
  13. #include <cool/char.h>        // for strcmp
  14. #include <cool/Set.h>
  15. #include <cool/Set.C>
  16. #include <test.h>
  17.  
  18. void test_int () {
  19.   CoolSet<int> s0;
  20.   TEST ("CoolSet<int> s0",s0.get_bucket_count(),3);
  21.   TEST ("s0.capacity()", s0.capacity(), 24);
  22.   CoolSet<int> s1(20);
  23.   TEST ("CoolSet<int> s1(20)",s1.get_bucket_count(),3);
  24.   TEST ("s1.capacity()", s1.capacity(), 24);
  25.   CoolSet<int> s2(25);
  26.   TEST ("CoolSet<int> s2(25)",s2.get_bucket_count(),7);
  27.   TEST ("s2.capacity()", s2.capacity(), 56);
  28.   CoolSet<int> s3(s2);
  29.   TEST ("CoolSet<int> s3(s2)",s3.get_bucket_count(),7);
  30.   TEST ("s2==s3", (s2==s3), TRUE);
  31.   TEST ("s2 == s3", (s2 == s3), TRUE);
  32.   TEST ("s1 == s2", (s1 == s2), TRUE);
  33.   TEST ("s1 != s3", (s1 != s3), FALSE);
  34.   TEST ("s0.reset()",(s0.reset(),1),1);
  35.   TEST ("s0.put(1)", s0.put(1),TRUE);
  36.   TEST ("s0.find(1)", s0.find(1), TRUE);
  37.   TEST ("s0.value()", s0.value(), 1);
  38.   TEST ("s0.length()", s0.length(), 1);
  39.   TEST ("s0.put(2)", s0.put(2),TRUE);
  40.   TEST ("s0.find(2)", s0.find(2), TRUE);
  41.   TEST ("s0.put(3)", s0.put(3),TRUE);
  42.   TEST ("s0.find(3)", s0.find(3), TRUE);
  43.   TEST ("s0.put(4)", s0.put(4), TRUE);
  44.   TEST ("s0.value()", s0.value(), 4);
  45.   TEST ("s0.find(4)", s0.find(4), TRUE);
  46.   TEST ("s0.value()", s0.value(), 4);
  47.   TEST ("s0.put(5)", s0.put(5),TRUE);
  48.   TEST ("s0.find(5)", s0.find(5), TRUE);
  49.   TEST ("s0.put(6)", s0.put(6),TRUE);
  50.   TEST ("s0.find(6)", s0.find(6), TRUE);
  51.   TEST ("s0.put(7)", s0.put(7),TRUE);
  52.   TEST ("s0.find(7)", s0.find(7), TRUE);
  53.   TEST ("s0.put(8)", s0.put(8),TRUE);
  54.   TEST ("s0.find(8)", s0.find(8), TRUE);
  55.   TEST ("s0.put(9)", s0.put(9),TRUE);
  56.   TEST ("s0.find(9)", s0.find(9), TRUE);
  57.   TEST ("s0.get_bucket_count()", s0.get_bucket_count(), 3);
  58.   TEST ("s0.length()", s0.length(), 9);
  59.   TEST ("s0.remove(1)", s0.remove(1), TRUE);
  60.   TEST ("s0.length()", s0.length(), 8);
  61.   TEST ("s0.reset()",(s0.reset(),1),1);
  62.   TEST ("s0.next()",s0.next(),TRUE);
  63.   TEST ("s0.next()",s0.next(),TRUE);
  64.   TEST ("s0.next()",s0.next(),TRUE);
  65.   TEST ("s0.next()",s0.next(),TRUE);
  66.   TEST ("s0.next()",s0.next(),TRUE);
  67.   TEST ("s0.next()",s0.next(),TRUE);
  68.   TEST ("s0.next()",s0.next(),TRUE);
  69.   TEST ("s0.next()",s0.next(),TRUE);
  70.   TEST ("s0.next()",s0.next(),FALSE);
  71.   TEST ("s0.prev()",s0.prev(),TRUE);
  72.   TEST ("s0.prev()",s0.prev(),TRUE);
  73.   TEST ("s0.prev()",s0.prev(),TRUE);
  74.   TEST ("s0.prev()",s0.prev(),TRUE);
  75.   TEST ("s0.prev()",s0.prev(),TRUE);
  76.   TEST ("s0.prev()",s0.prev(),TRUE);
  77.   TEST ("s0.prev()",s0.prev(),TRUE);
  78.   TEST ("s0.prev()",s0.prev(),TRUE);
  79.   TEST ("s0.prev()",s0.prev(),FALSE);
  80.   TEST ("s1=s0", (s1=s0,(s0==s1)), TRUE);
  81.   TEST ("s1.resize(30)", s1.resize(30), TRUE);
  82.   TEST ("s1.find(7)", s1.find(7), TRUE);
  83.   TEST ("s1.value()", s1.value(), 7);
  84.   TEST ("s1.find(3)", s1.find(3), TRUE);
  85.   TEST ("s1.value()", s1.value(), 3);
  86.   TEST ("s1.find(9)", s1.find(9), TRUE);
  87.   TEST ("s1.value()", s1.value(), 9);
  88.   TEST ("s1.get_bucket_count()", s1.get_bucket_count(), 7);
  89.   TEST ("s1.length()", s1.length(), 8);
  90.   TEST ("s0.set_ratio(1.0)", (s0.set_ratio(1.0),1), 1);
  91.   TEST ("s0.resize(30)", s0.resize(30), TRUE);
  92.   TEST ("s0.get_bucket_count()", s0.get_bucket_count(), 7);
  93.   TEST ("s0.find(2)", s0.find(2), TRUE);
  94.   TEST ("s0.find(4)", s0.find(4), TRUE);
  95.   TEST ("s0.find(6)", s0.find(6), TRUE);
  96.   TEST ("s0.find(8)", s0.find(8), TRUE);
  97.   TEST ("s0.resize(60)", s0.resize(60), TRUE);
  98.   TEST ("s0.get_bucket_count()", s0.get_bucket_count(), 19);
  99.   TEST ("s0.find(2)", s0.find(2), TRUE);
  100.   TEST ("s0.value()", s0.value(), 2);
  101.   TEST ("s0.find(4)", s0.find(4), TRUE);
  102.   TEST ("s0.value()", s0.value(), 4);
  103.   TEST ("s0.find(6)", s0.find(6), TRUE);
  104.   TEST ("s0.value()", s0.value(), 6);
  105.   TEST ("s0.find(8)", s0.find(8), TRUE);
  106.   TEST ("s0.value()", s0.value(), 8);
  107.   TEST ("s0.remove()", s0.remove(), TRUE);
  108.   TEST ("s0.find(8)", s0.find(8), FALSE);
  109.   CoolSet<int> s4(s1);
  110.   TEST ("CoolSet<int> S4(s1)", (s4==s1), TRUE);
  111.   TEST ("s4.remove(6)", s4.remove(6), TRUE);
  112.   TEST ("s1.search(s4)", s1.search(s4), TRUE);
  113.   TEST ("s0.clear()", (s0.clear(), s0.length()), 0);
  114.   TEST ("s1.clear()", (s1.clear(), s1.length()), 0);
  115. }
  116.  
  117. void test_int_2 () {
  118.   CoolSet<int> s0;
  119.   CoolSet<int> s1;
  120.   CoolSet<int> s2;
  121.   CoolSet<int> s3;
  122.   CoolSet<int> s4;
  123.   CoolSet<int> s5; 
  124.   CoolSet<int> s6;
  125.   CoolSet<int> s7;
  126.   for (int i = 0; i < 10; i++) 
  127.     s0.put(i);
  128.   s0.remove(8);
  129.   for (i = 2; i < 10; i++)
  130.     s1.put(i);
  131.   s1.remove(4);
  132.   s2.put(0);
  133.   s2.put(1);
  134.   s2.put(4);
  135.   s3.put(8);
  136.   s4 = s0;
  137.   s4.put(8);
  138.   s5 = s1;
  139.   s5.remove(8);
  140.   s6.put(0);
  141.   s6.put(1);
  142.   s6.put(4);
  143.   s6.put(8);
  144. //   cout << s0 << "-" << s1 << "=" << (s0-s1) << endl;
  145. //   cout << s0 << "|" << s1 << "=" << (s0|s1) << endl;
  146. //   cout << s0 << "&" << s1 << "=" << (s0&s1) << endl;
  147. //   cout << s0 << "^" << s1 << "=" << (s0^s1) << endl;
  148.  
  149.   TEST ("(s0 - s1) == s2", ((s0-s1) == s2), TRUE);
  150.   TEST ("(s1 - s0) == s3", ((s1-s0) == s3), TRUE);
  151.   TEST ("(s0 | s1) == s4", ((s0|s1) == s4), TRUE);
  152.   TEST ("(s1 | s0) == s4", ((s1|s0) == s4), TRUE);
  153.   TEST ("(s0 & s1) == s5", ((s0&s1) == s5), TRUE);
  154.   TEST ("(s1 & s0) == s5", ((s1&s0) == s5), TRUE);
  155.   
  156.   TEST ("(s0 ^ s1) == s6", ((s0^s1) == s6), TRUE);
  157.   TEST ("(s1 ^ s0) == s6", ((s1^s0) == s6), TRUE);
  158.   s7 = s0;
  159.   TEST ("s0 -= s1", (s0 -= s1, s0 == s2), TRUE);
  160.   s0 = s7; s7=s1;
  161.   TEST ("s1 -= s0", (s1 -= s0, s1 == s3), TRUE);
  162.   s1 = s7; s7=s0;
  163.   TEST ("s0 |= s1", (s0 |= s1, s0 == s4), TRUE);
  164.   s0 = s7; s7=s1;
  165.   TEST ("s1 |= s0", (s1 |= s0, s1 == s4), TRUE);
  166.   s1 = s7; s7=s0;
  167.   TEST ("s0 &= s1", (s0 &= s1, s0 == s5), TRUE);
  168.   s0 = s7; s7=s1;
  169.   TEST ("s1 &= s0", (s1 &= s0, s1 == s5), TRUE);
  170.   s1 = s7; s7=s0;
  171.   TEST ("s0 ^= s1", (s0 ^= s1, s0 == s6), TRUE);
  172.   s0 = s7; s7=s1;
  173.   TEST ("s1 ^= s0", (s1 ^= s0, s1 == s6), TRUE);
  174.   s1 = s7; s7 = s0;
  175.   TEST ("s0.set_difference(s1)", (s0.set_difference(s1), s0 == s2), TRUE);
  176.   s0 = s7;
  177.   TEST ("s0.set_union(s1)", (s0.set_union(s1), s0 == s4), TRUE);
  178.   s0 = s7;
  179.   TEST ("s0.set_intersection(s1)", (s0.set_intersection(s1), s0 == s5), TRUE);
  180.   s0 = s7;
  181.   TEST ("s0.set_xor(s1)", (s0.set_xor(s1), s0 == s6), TRUE);
  182.   s0 = s7;
  183.   s0.reset(), s1.reset();
  184.   // Create sets for intersection, union, difference, and xor
  185.   CoolSet<int> sint;
  186.   CoolSet<int> sunion;
  187.   CoolSet<int> sdif;
  188.   CoolSet<int> sxor;
  189.   {sint.put(2);}
  190.   {sint.put(7);}
  191.   {sint.put(9);}
  192.   {sint.put(6);}
  193.   {sint.put(5);}
  194.   {sint.put(3);}
  195.   {sdif.put(1);}
  196.   {sdif.put(4);}
  197.   {sdif.put(0);}
  198.   {sunion.put(6);}
  199.   {sunion.put(1);}
  200.   {sunion.put(3);}
  201.   {sunion.put(2);}
  202.   {sunion.put(8);}
  203.   {sunion.put(0);}
  204.   {sunion.put(5);}
  205.   {sunion.put(7);}
  206.   {sunion.put(4);}
  207.   {sunion.put(9);}
  208.   {sxor.put(1);}
  209.   {sxor.put(8);}
  210.   {sxor.put(4);}
  211.   {sxor.put(0);}
  212.  
  213.   CoolSet<int> ltemp1;
  214.   CoolSet<int> ltemp2;
  215.   CoolSet<int> ltemp3;
  216.   CoolSet<int> ltemp4;
  217.  
  218.   s0.reset(), s1.reset();
  219.   TEST_RUN ("s0.next_intersection(s1)", 
  220.         while (s0.next_intersection(s1)) ltemp1.put(s0.value()),
  221.         ltemp1 == sint, TRUE);
  222.   s0.reset(), s1.reset();
  223.   TEST_RUN ("s0.next_difference(s1)", 
  224.         while (s0.next_difference(s1)) ltemp2.put(s0.value()),
  225.         ltemp2 == sdif, TRUE);
  226.   s0.reset(), s1.reset();
  227.   TEST_RUN ("s0.next_union(s1)", 
  228.         while (s0.next_union(s1)) ltemp3.put(s0.value()),
  229.         ltemp3 == sunion, TRUE);
  230.   s0.reset(), s1.reset();
  231.   TEST_RUN ("s0.next_xor(s1)", 
  232.         while (s0.next_xor(s1)) ltemp4.put(s0.value()),
  233.         ltemp4 == sxor, TRUE);
  234. }
  235.  
  236. void test_double () {
  237.   CoolSet<double> d0;
  238.   TEST ("CoolSet<double> d0",d0.get_bucket_count(),3);
  239.   TEST ("d0.capacity()", d0.capacity(), 24);
  240.   CoolSet<double> d1(20);
  241.   TEST ("CoolSet<double> d1(20)",d1.get_bucket_count(),3);
  242.   TEST ("d1.capacity()", d1.capacity(), 24);
  243.   CoolSet<double> d2(25);
  244.   TEST ("CoolSet<double> d2(25)",d2.get_bucket_count(),7);
  245.   TEST ("d2.capacity()", d2.capacity(), 56);
  246.   CoolSet<double> d3(d2);
  247.   TEST ("CoolSet<double> d3(d2)",d3.get_bucket_count(),7);
  248.   TEST ("d2==d3", (d2==d3), TRUE);
  249.   TEST ("d2 == d3", (d2 == d3), TRUE);
  250.   TEST ("d1 == d2", (d1 == d2), TRUE);
  251.   TEST ("d1 != d3", (d1 != d3), FALSE);
  252.   TEST ("d0.reset()",(d0.reset(),1.0),1.0);
  253.   TEST ("d0.put(1.0)", d0.put(1.0),TRUE);
  254.   TEST ("d0.find(1.0)", d0.find(1.0), TRUE);
  255.   TEST ("d0.value()", d0.value(), 1.0);
  256.   TEST ("d0.length()", d0.length(), 1.0);
  257.   TEST ("d0.put(2.0)", d0.put(2.0),TRUE);
  258.   TEST ("d0.find(2.0)", d0.find(2.0), TRUE);
  259.   TEST ("d0.put(3.0)", d0.put(3.0),TRUE);
  260.   TEST ("d0.find(3.0)", d0.find(3.0), TRUE);
  261.   TEST ("d0.put(4.0)", d0.put(4.0), TRUE);
  262.   TEST ("d0.value()", d0.value(), 4.0);
  263.   TEST ("d0.find(4.0)", d0.find(4.0), TRUE);
  264.   TEST ("d0.value()", d0.value(), 4.0);
  265.   TEST ("d0.put(5.0)", d0.put(5.0),TRUE);
  266.   TEST ("d0.find(5.0)", d0.find(5.0), TRUE);
  267.   TEST ("d0.put(6.0)", d0.put(6.0),TRUE);
  268.   TEST ("d0.find(6.0)", d0.find(6.0), TRUE);
  269.   TEST ("d0.put(7.0)", d0.put(7.0),TRUE);
  270.   TEST ("d0.find(7.0)", d0.find(7.0), TRUE);
  271.   TEST ("d0.put(8.0)", d0.put(8.0),TRUE);
  272.   TEST ("d0.find(8.0)", d0.find(8.0), TRUE);
  273.   TEST ("d0.put(9.0)", d0.put(9.0),TRUE);
  274.   TEST ("d0.find(9.0)", d0.find(9.0), TRUE);
  275.   TEST ("d0.get_bucket_count()", d0.get_bucket_count(), 3.0);
  276.   TEST ("d0.length()", d0.length(), 9);
  277.   TEST ("d0.remove(1.0)", d0.remove(1.0), TRUE);
  278.   TEST ("d0.length()", d0.length(), 8);
  279.   TEST ("d0.reset()",(d0.reset(),1.0),1.0);
  280.   TEST ("d0.next()",d0.next(),TRUE);
  281.   TEST ("d0.next()",d0.next(),TRUE);
  282.   TEST ("d0.next()",d0.next(),TRUE);
  283.   TEST ("d0.next()",d0.next(),TRUE);
  284.   TEST ("d0.next()",d0.next(),TRUE);
  285.   TEST ("d0.next()",d0.next(),TRUE);
  286.   TEST ("d0.next()",d0.next(),TRUE);
  287.   TEST ("d0.next()",d0.next(),TRUE);
  288.   TEST ("d0.next()",d0.next(),FALSE);
  289.   TEST ("d0.prev()",d0.prev(),TRUE);
  290.   TEST ("d0.prev()",d0.prev(),TRUE);
  291.   TEST ("d0.prev()",d0.prev(),TRUE);
  292.   TEST ("d0.prev()",d0.prev(),TRUE);
  293.   TEST ("d0.prev()",d0.prev(),TRUE);
  294.   TEST ("d0.prev()",d0.prev(),TRUE);
  295.   TEST ("d0.prev()",d0.prev(),TRUE);
  296.   TEST ("d0.prev()",d0.prev(),TRUE);
  297.   TEST ("d0.prev()",d0.prev(),FALSE);
  298.   TEST ("d1=d0", (d1=d0,(d0==d1)), TRUE);
  299.   TEST ("d1.resize(30)", d1.resize(30), TRUE);
  300.   TEST ("d1.find(7.0)", d1.find(7.0), TRUE);
  301.   TEST ("d1.value()", d1.value(), 7.0);
  302.   TEST ("d1.find(3.0)", d1.find(3.0), TRUE);
  303.   TEST ("d1.value()", d1.value(), 3.0);
  304.   TEST ("d1.find(9.0)", d1.find(9.0), TRUE);
  305.   TEST ("d1.value()", d1.value(), 9.0);
  306.   TEST ("d1.get_bucket_count()", d1.get_bucket_count(), 7);
  307.   TEST ("d1.length()", d1.length(), 8);
  308.   TEST ("d0.set_ratio(1.0)", (d0.set_ratio(1.0),1.0), 1.0);
  309.   TEST ("d0.resize(30)", d0.resize(30), TRUE);
  310.   TEST ("d0.get_bucket_count()", d0.get_bucket_count(), 7);
  311.   TEST ("d0.find(2.0)", d0.find(2.0), TRUE);
  312.   TEST ("d0.find(4.0)", d0.find(4.0), TRUE);
  313.   TEST ("d0.find(6.0)", d0.find(6.0), TRUE);
  314.   TEST ("d0.find(8.0)", d0.find(8.0), TRUE);
  315.   TEST ("d0.resize(60)", d0.resize(60), TRUE);
  316.   TEST ("d0.get_bucket_count()", d0.get_bucket_count(), 19);
  317.   TEST ("d0.find(2.0)", d0.find(2.0), TRUE);
  318.   TEST ("d0.value()", d0.value(), 2.0);
  319.   TEST ("d0.find(4.0)", d0.find(4.0), TRUE);
  320.   TEST ("d0.value()", d0.value(), 4.0);
  321.   TEST ("d0.find(6.0)", d0.find(6.0), TRUE);
  322.   TEST ("d0.value()", d0.value(), 6.0);
  323.   TEST ("d0.find(8.0)", d0.find(8.0), TRUE);
  324.   TEST ("d0.value()", d0.value(), 8.0);
  325.   TEST ("d0.remove()", d0.remove(), TRUE);
  326.   TEST ("d0.find(8.0)", d0.find(8.0), FALSE);
  327.   CoolSet<double> d4(d1);
  328.   TEST ("CoolSet<double> D4(d1)", (d4==d1), TRUE);
  329.   TEST ("d4.remove(6.0)", d4.remove(6.0), TRUE);
  330.   TEST ("d1.search(d4)", d1.search(d4), TRUE);
  331.   TEST ("d0.clear()", (d0.clear(), d0.length()), 0);
  332.   TEST ("d1.clear()", (d1.clear(), d1.length()), 0);
  333. }
  334.  
  335. void test_double_2 () {
  336.   CoolSet<double> d0;
  337.   CoolSet<double> d1;
  338.   CoolSet<double> d2;
  339.   CoolSet<double> d3;
  340.   CoolSet<double> d4;
  341.   CoolSet<double> d5; 
  342.   CoolSet<double> d6;
  343.   CoolSet<double> d7;
  344.   for (double i = 0.0; i < 10.0; i++) 
  345.     d0.put(i);
  346.   d0.remove(8.0);
  347.   for (i = 2.0; i < 10.0; i++)
  348.     d1.put(i);
  349.   d1.remove(4.0);
  350.   d2.put(0.0);
  351.   d2.put(1.0);
  352.   d2.put(4.0);
  353.   d3.put(8.0);
  354.   d4 = d0;
  355.   d4.put(8.0);
  356.   d5 = d1;
  357.   d5.remove(8.0);
  358.   d6.put(0.0);
  359.   d6.put(1.0);
  360.   d6.put(4.0);
  361.   d6.put(8.0);
  362.   TEST ("(d0 - d1) == d2", ((d0-d1) == d2), TRUE);
  363.   TEST ("(d1 - d0) == d3", ((d1-d0) == d3), TRUE);
  364.   TEST ("(d0 | d1) == d4", ((d0|d1) == d4), TRUE);
  365.   TEST ("(d1 | d0) == d4", ((d1|d0) == d4), TRUE);
  366.   TEST ("(d0 & d1) == d5", ((d0&d1) == d5), TRUE);
  367.   TEST ("(d1 & d0) == d5", ((d1&d0) == d5), TRUE);
  368.   TEST ("(d0 ^ d1) == d6", ((d0^d1) == d6), TRUE);
  369.   TEST ("(d1 ^ d0) == d6", ((d1^d0) == d6), TRUE);
  370.   d7 = d0;
  371.   TEST ("d0 -= d1", (d0 -= d1, d0 == d2), TRUE);
  372.   d0 = d7; d7=d1;
  373.   TEST ("d1 -= d0", (d1 -= d0, d1 == d3), TRUE);
  374.   d1 = d7; d7=d0;
  375.   TEST ("d0 |= d1", (d0 |= d1, d0 == d4), TRUE);
  376.   d0 = d7; d7=d1;
  377.   TEST ("d1 |= d0", (d1 |= d0, d1 == d4), TRUE);
  378.   d1 = d7; d7=d0;
  379.   TEST ("d0 &= d1", (d0 &= d1, d0 == d5), TRUE);
  380.   d0 = d7; d7=d1;
  381.   TEST ("d1 &= d0", (d1 &= d0, d1 == d5), TRUE);
  382.   d1 = d7; d7=d0;
  383.   TEST ("d0 ^= d1", (d0 ^= d1, d0 == d6), TRUE);
  384.   d0 = d7; d7=d1;
  385.   TEST ("d1 ^= d0", (d1 ^= d0, d1 == d6), TRUE);
  386.   d1 = d7; d7 = d0;
  387.   TEST ("d0.set_difference(d1)", (d0.set_difference(d1), d0 == d2), TRUE);
  388.   d0 = d7;
  389.   TEST ("d0.set_union(d1)", (d0.set_union(d1), d0 == d4), TRUE);
  390.   d0 = d7;
  391.   TEST ("d0.set_intersection(d1)", (d0.set_intersection(d1), d0 == d5), TRUE);
  392.   d0 = d7;
  393.   TEST ("d0.set_xor(d1)", (d0.set_xor(d1), d0 == d6), TRUE);
  394.   d0 = d7;
  395.   d0.reset(), d1.reset();
  396.   // Create sets containing the expected intersection, union, difference, and xor
  397.   CoolSet<double> dint;
  398.   CoolSet<double> dunion;
  399.   CoolSet<double> ddif;
  400.   CoolSet<double> dxor;
  401.  
  402.   {dint.put(9);}
  403.   {dint.put(7);}
  404.   {dint.put(5);}
  405.   {dint.put(3);}
  406.   {dint.put(6);}
  407.   {dint.put(2);}
  408.   {ddif.put(1);}
  409.   {ddif.put(0);}
  410.   {ddif.put(4);}
  411.   {dunion.put(1);}
  412.   {dunion.put(7);}
  413.   {dunion.put(2);}
  414.   {dunion.put(3);}
  415.   {dunion.put(0);}
  416.   {dunion.put(5);}
  417.   {dunion.put(8);}
  418.   {dunion.put(6);}
  419.   {dunion.put(4);}
  420.   {dunion.put(9);}
  421.   {dxor.put(1);}
  422.   {dxor.put(8);}
  423.   {dxor.put(4);}
  424.   {dxor.put(0);}
  425.  
  426.   CoolSet<double> ltemp1;
  427.   CoolSet<double> ltemp2;
  428.   CoolSet<double> ltemp3;
  429.   CoolSet<double> ltemp4;
  430.  
  431.   d0.reset(), d1.reset();
  432.   TEST_RUN ("d0.next_intersection(d1)", 
  433.         while (d0.next_intersection(d1)) ltemp1.put(d0.value()),
  434.         ltemp1 == dint, TRUE);
  435.   d0.reset(), d1.reset();
  436.   TEST_RUN ("d0.next_difference(d1)", 
  437.         while (d0.next_difference(d1)) ltemp2.put(d0.value()),
  438.         ltemp2 == ddif, TRUE);
  439.   d0.reset(), d1.reset();
  440.   TEST_RUN ("d0.next_union(d1)", 
  441.         while (d0.next_union(d1)) ltemp3.put(d0.value()),
  442.         ltemp3 == dunion, TRUE);
  443.   d0.reset(), d1.reset();
  444.   TEST_RUN ("d0.next_xor(d1)", 
  445.         while (d0.next_xor(d1)) ltemp4.put(d0.value()),
  446.         ltemp4 == dxor, TRUE);
  447. }
  448.  
  449. void test_charP () {
  450.   CoolSet<char*> color1;
  451.   TEST ("CoolSet<char*> color1",color1.get_bucket_count(),3);
  452.   TEST ("color1.capacity()", color1.capacity(), 24);
  453.   CoolSet<char*> color2(20);
  454.   TEST ("CoolSet<char*> color2(20)",color2.get_bucket_count(),3);
  455.   TEST ("color2.capacity()", color2.capacity(), 24);
  456.   CoolSet<char*> color3(25);
  457.   TEST ("CoolSet<char*> color3(25)",color3.get_bucket_count(),7);
  458.   TEST ("color3.capacity()", color3.capacity(), 56);
  459.   CoolSet<char*> color4(color3);
  460.   TEST ("CoolSet<char*> color4(color3)",color4.get_bucket_count(),7);
  461.   TEST ("color3==color4", (color3==color4), TRUE);
  462.   TEST ("color3 == color4", (color3 == color4), TRUE);
  463.   TEST ("color2 == color3", (color2 == color3), TRUE);
  464.   TEST ("color2 != color4", (color2 != color4), FALSE);
  465.   TEST ("color1.reset()",(color1.reset(),1.0),1.0);
  466.   TEST ("color1.put(\"RED\")", color1.put("RED"),TRUE);
  467.   TEST ("color1.find(\"RED\")", color1.find("RED"), TRUE);
  468.   TEST ("color1.value()", strcmp (color1.value(), "RED"), 0);
  469.   TEST ("color1.length()", color1.length(), 1.0);
  470.   TEST ("color1.put(\"YELLOW\")", color1.put("YELLOW"),TRUE);
  471.   TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  472.   TEST ("color1.put(\"MAGENTA\")", color1.put("MAGENTA"),TRUE);
  473.   TEST ("color1.find(\"MAGENTA\")", color1.find("MAGENTA"), TRUE);
  474.   TEST ("color1.put(\"BLUE\")", color1.put("BLUE"), TRUE);
  475.   TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  476.   TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  477.   TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  478.   TEST ("color1.put(\"ORANGE\")", color1.put("ORANGE"),TRUE);
  479.   TEST ("color1.find(\"ORANGE\")", color1.find("ORANGE"), TRUE);
  480.   TEST ("color1.put(\"WHITE\")", color1.put("WHITE"),TRUE);
  481.   TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  482.   TEST ("color1.put(\"BROWN\")", color1.put("BROWN"),TRUE);
  483.   TEST ("color1.find(\"BROWN\")", color1.find("BROWN"), TRUE);
  484.   TEST ("color1.put(\"BLACK\")", color1.put("BLACK"),TRUE);
  485.   TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  486.   TEST ("color1.put(\"GREY\")", color1.put("GREY"),TRUE);
  487.   TEST ("color1.find(\"GREY\")", color1.find("GREY"), TRUE);
  488.   TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 3);
  489.   TEST ("color1.length()", color1.length(), 9);
  490.   TEST ("color1.remove(\"RED\")", color1.remove("RED"), TRUE);
  491.   TEST ("color1.length()", color1.length(), 8);
  492.   TEST ("color1.reset()",(color1.reset(),1.0),1.0);
  493.   TEST ("color1.next()",color1.next(),TRUE);
  494.   TEST ("color1.next()",color1.next(),TRUE);
  495.   TEST ("color1.next()",color1.next(),TRUE);
  496.   TEST ("color1.next()",color1.next(),TRUE);
  497.   TEST ("color1.next()",color1.next(),TRUE);
  498.   TEST ("color1.next()",color1.next(),TRUE);
  499.   TEST ("color1.next()",color1.next(),TRUE);
  500.   TEST ("color1.next()",color1.next(),TRUE);
  501.   TEST ("color1.next()",color1.next(),FALSE);
  502.   TEST ("color1.prev()",color1.prev(),TRUE);
  503.   TEST ("color1.prev()",color1.prev(),TRUE);
  504.   TEST ("color1.prev()",color1.prev(),TRUE);
  505.   TEST ("color1.prev()",color1.prev(),TRUE);
  506.   TEST ("color1.prev()",color1.prev(),TRUE);
  507.   TEST ("color1.prev()",color1.prev(),TRUE);
  508.   TEST ("color1.prev()",color1.prev(),TRUE);
  509.   TEST ("color1.prev()",color1.prev(),TRUE);
  510.   TEST ("color1.prev()",color1.prev(),FALSE);
  511.   TEST ("color2=color1", (color2=color1,(color1==color2)), TRUE);
  512.   TEST ("color2.resize(30)", color2.resize(30), TRUE);
  513.   TEST ("color2.find(\"BROWN\")", color2.find("BROWN"), TRUE);
  514.   TEST ("color2.value()", strcmp (color2.value(), "BROWN"), 0);
  515.   TEST ("color2.find(\"MAGENTA\")", color2.find("MAGENTA"), TRUE);
  516.   TEST ("color2.value()", strcmp (color2.value(), "MAGENTA"), 0);
  517.   TEST ("color2.find(\"GREY\")", color2.find("GREY"), TRUE);
  518.   TEST ("color2.value()", strcmp (color2.value(), "GREY"), 0);
  519.   TEST ("color2.get_bucket_count()", color2.get_bucket_count(), 7);
  520.   TEST ("color2.length()", color2.length(), 8);
  521.   TEST ("color1.set_ratio(1.0)", (color1.set_ratio(1.0),1.0), 1.0);
  522.   TEST ("color1.resize(30)", color1.resize(30), TRUE);
  523.   TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 7);
  524.   TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  525.   TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  526.   TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  527.   TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  528.   TEST ("color1.resize(60)", color1.resize(60), TRUE);
  529.   TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 19);
  530.   TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  531.   TEST ("color1.value()", strcmp (color1.value(), "YELLOW"), 0);
  532.   TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  533.   TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  534.   TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  535.   TEST ("color1.value()", strcmp (color1.value(), "WHITE"), 0);
  536.   TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  537.   TEST ("color1.value()", strcmp (color1.value(), "BLACK"), 0);
  538.   TEST ("color1.remove()", color1.remove(), TRUE);
  539.   TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), FALSE);
  540.   CoolSet<char*> color5(color2);
  541.   TEST ("CoolSet<char*> Color5(color2)", (color5==color2), TRUE);
  542.   TEST ("color5.remove(\"WHITE\")", color5.remove("WHITE"), TRUE);
  543.   TEST ("color2.search(color5)", color2.search(color5), TRUE);
  544.   TEST ("color1.clear()", (color1.clear(), color1.length()), 0);
  545.   TEST ("color2.clear()", (color2.clear(), color2.length()), 0);
  546. }
  547.  
  548. void test_charP_2 () {
  549.   CoolSet<char*> color0;
  550.   CoolSet<char*> color1;
  551.   CoolSet<char*> color2;
  552.   CoolSet<char*> color3;
  553.   CoolSet<char*> color4;
  554.   CoolSet<char*> color5; 
  555.   CoolSet<char*> color6;
  556.   CoolSet<char*> color7;
  557.   color0.put("RED");
  558.   color0.put("BLUE");
  559.   color0.put("GREEN");
  560.   color0.put("BLACK");
  561.   color0.put("PURPLE");
  562.   color0.put("GREY");
  563.   color0.put("WHITE");
  564.   color0.put("YELLOW");
  565.   color0.put("ORANGE");
  566.   color1.put("GREEN");
  567.   color1.put("BLACK");
  568.   color1.put("GREY");
  569.   color1.put("WHITE");
  570.   color1.put("ORANGE");
  571.   color1.put("YELLOW");
  572.   color1.put("MAGENTA");
  573.   color1.put("PURPLE");
  574.   color2.put("RED");
  575.   color2.put("BLUE");
  576.   color3.put("MAGENTA");
  577.   color4 = color0;
  578.   color4.put("MAGENTA");
  579.   color5 = color1;
  580.   color5.remove("MAGENTA");
  581.   color6.put("RED");
  582.   color6.put("BLUE");
  583.   color6.put("MAGENTA");
  584.   TEST ("(color0 - color1) == color2", ((color0-color1) == color2), TRUE);
  585.   TEST ("(color1 - color0) == color3", ((color1-color0) == color3), TRUE);
  586.   TEST ("(color0 | color1) == color4", ((color0|color1) == color4), TRUE);
  587.   TEST ("(color1 | color0) == color4", ((color1|color0) == color4), TRUE);
  588.   TEST ("(color0 & color1) == color5", ((color0&color1) == color5), TRUE);
  589.   TEST ("(color1 & color0) == color5", ((color1&color0) == color5), TRUE);
  590.   TEST ("(color0 ^ color1) == color6", ((color0^color1) == color6), TRUE);
  591.   TEST ("(color1 ^ color0) == color6", ((color1^color0) == color6), TRUE);
  592.   color7 = color0;
  593.   TEST ("color0 -= color1", (color0 -= color1, color0 == color2), TRUE);
  594.   color0 = color7; color7=color1;
  595.   TEST ("color1 -= color0", (color1 -= color0, color1 == color3), TRUE);
  596.   color1 = color7; color7=color0;
  597.   TEST ("color0 |= color1", (color0 |= color1, color0 == color4), TRUE);
  598.   color0 = color7; color7=color1;
  599.   TEST ("color1 |= color0", (color1 |= color0, color1 == color4), TRUE);
  600.   color1 = color7; color7=color0;
  601.   TEST ("color0 &= color1", (color0 &= color1, color0 == color5), TRUE);
  602.   color0 = color7; color7=color1;
  603.   TEST ("color1 &= color0", (color1 &= color0, color1 == color5), TRUE);
  604.   color1 = color7; color7=color0;
  605.   TEST ("color0 ^= color1", (color0 ^= color1, color0 == color6), TRUE);
  606.   color0 = color7; color7=color1;
  607.   TEST ("color1 ^= color0", (color1 ^= color0, color1 == color6), TRUE);
  608.   color1 = color7; color7 = color0;
  609.   TEST ("color0.set_difference(color1)", (color0.set_difference(color1), color0 == color2), TRUE);
  610.   color0 = color7;
  611.   TEST ("color0.set_union(color1)", (color0.set_union(color1), color0 == color4), TRUE);
  612.   color0 = color7;
  613.   TEST ("color0.set_intersection(color1)", (color0.set_intersection(color1), color0 == color5), TRUE);
  614.   color0 = color7;
  615.   TEST ("color0.set_xor(color1)", (color0.set_xor(color1), color0 == color6), TRUE);
  616.   color0 = color7;
  617.   color0.reset(), color1.reset();
  618.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  619.   TEST ("color0.value()", strcmp(color0.value(),"BLACK"),0);
  620.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  621.   TEST ("color0.value()", strcmp(color0.value(),"PURPLE"),0);
  622.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  623.   TEST ("color0.value()", strcmp(color0.value(),"WHITE"),0);
  624.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  625.   TEST ("color0.value()", strcmp(color0.value(),"YELLOW"),0);
  626.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  627.   TEST ("color0.value()", strcmp(color0.value(),"GREY"),0);
  628.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  629.   TEST ("color0.value()", strcmp(color0.value(),"ORANGE"),0);
  630.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  631.   TEST ("color0.value()", strcmp(color0.value(),"GREEN"),0);
  632.   TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), FALSE);
  633.   color0.reset(), color1.reset();
  634.   TEST ("color0.next_difference(color1)", color0.next_difference(color1), TRUE);
  635.   TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  636.   TEST ("color0.next_difference(color1)", color0.next_difference(color1), TRUE);
  637.   TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  638.   TEST ("color0.next_difference(color1)", color0.next_difference(color1), FALSE);
  639.   color0.reset(), color1.reset();
  640.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  641.   TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  642.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  643.   TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  644.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  645.   TEST ("color0.value()", strcmp(color0.value(),"BLACK"),0);
  646.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  647.   TEST ("color0.value()", strcmp(color0.value(),"PURPLE"),0);
  648.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  649.   TEST ("color0.value()", strcmp(color0.value(),"WHITE"),0);
  650.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  651.   TEST ("color0.value()", strcmp(color0.value(),"YELLOW"),0);
  652.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  653.   TEST ("color0.value()", strcmp(color0.value(),"GREY"),0);
  654.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  655.   TEST ("color0.value()", strcmp(color0.value(),"ORANGE"),0);
  656.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  657.   TEST ("color0.value()", strcmp(color0.value(),"GREEN"),0);
  658.   TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  659.   TEST ("color0.value()", strcmp(color0.value(),"MAGENTA"),0);
  660.   TEST ("color0.next_union(color1)", color0.next_union(color1), FALSE);
  661.   color0.reset(), color1.reset();
  662.   TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  663.   TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  664.   TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  665.   TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  666.   TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  667.   TEST ("color0.value()", strcmp(color0.value(),"MAGENTA"),0);
  668.   TEST ("color0.next_xor(color1)", color0.next_xor(color1), FALSE);
  669. }
  670.  
  671.  
  672. void test_leak () {
  673.   for (;;) {
  674.     test_int ();
  675.     test_int_2 ();
  676.     test_double ();
  677.     test_double_2 ();
  678.     test_charP ();
  679.     test_charP_2 ();
  680.   }
  681. }
  682.  
  683. int main (void) {
  684.   START("CoolSet");
  685.   test_int ();
  686.   test_int_2 ();
  687.   test_double ();
  688.   test_double_2 ();
  689.   test_charP ();
  690.   test_charP_2 ();
  691. #if LEAK
  692.   test_leak();
  693. #endif
  694.   SUMMARY();
  695.   return 0;
  696. }
  697.  
  698.